#include<bits/stdc++.h>
using namespace std;
const int NN=1e6+4;
map<int,int>mp[2][NN];
int minn[2][NN],maxx[2][NN];
struct segment_tree
{
    int minw,maxw,minp,maxp,val1,val2,w;
}tr[NN<<2];
void build(int u,int l,int r)
{
    tr[u]={(int)1e9,(int)-1e9,l,r,(int)1e9,(int)1e9,(int)1e9};
    if(l==r)
        return;
    int mid=l+(r-l)/2;
    build(u<<1,l,mid);
    build(u<<1|1,mid+1,r);
}
void pushup(int u)
{
    tr[u].val1=min(min(tr[u<<1].val1,tr[u<<1|1].val1),tr[u<<1|1].minw-tr[u<<1].maxw+1);
    tr[u].val2=tr[u<<1|1].minp-tr[u<<1].maxp+1;
    tr[u].w=tr[u<<1].minw-tr[u<<1|1].maxw+1;
    if(tr[u<<1].w<tr[u].w)
        tr[u].val2=tr[u<<1].val2,tr[u].w=tr[u<<1].w;
    else if(tr[u<<1].w==tr[u].w)
        tr[u].val2=min(tr[u].val2,tr[u<<1].val2);
    if(tr[u<<1|1].w<tr[u].w)
        tr[u].val2=tr[u<<1|1].val2,tr[u].w=tr[u<<1|1].w;
    else if(tr[u<<1|1].w==tr[u].w)
        tr[u].val2=min(tr[u].val2,tr[u<<1|1].val2);
    tr[u].minw=min(tr[u<<1].minw,tr[u<<1|1].minw);
    tr[u].maxw=max(tr[u<<1].maxw,tr[u<<1|1].maxw);
    if(tr[u<<1].minw==tr[u].minw)
        tr[u].minp=tr[u<<1].minp;
    else
        tr[u].minp=tr[u<<1|1].minp;
    if(tr[u<<1|1].maxw==tr[u].maxw)
        tr[u].maxp=tr[u<<1|1].maxp;
    else
        tr[u].maxp=tr[u<<1].maxp;
}
void modify(int u,int p,int pl,int pr)
{
    if(pl==pr)
    {
        tr[u].minw=minn[0][pl],tr[u].maxw=maxx[1][pr];
        tr[u].val2=1;
        tr[u].w=tr[u].minw-tr[u].maxw+1;
        return;
    }
    int mid=pl+(pr-pl)/2;
    if(p<=mid)
        modify(u<<1,p,pl,mid);
    else
        modify(u<<1|1,p,mid+1,pr);
    pushup(u);
}
void upd(int u)
{
    for(int i=0;i<=1;i++)
        if(!mp[i][u].size())
            minn[i][u]=1e9,maxx[i][u]=-1e9;
        else
        {
            auto it=mp[i][u].end();
            it--;
            minn[i][u]=mp[i][u].begin()->first,maxx[i][u]=it->first;
        }
}
int main()
{
    build(1,1,1000000);
    int q,cnt=0;
    scanf("%d",&q);
    while(q--)
    {
        char opt[3];
        int l,r;
        scanf("%s%d%d",opt,&l,&r);
        r--;
        if(opt[0]=='A')
        {
            mp[0][l][r]++;
            mp[1][r][l]++;
            upd(l),upd(r);
            cnt++;
        }
        else
        {
            mp[0][l][r]--;
            if(!mp[0][l][r])
                mp[0][l].erase(r);
            mp[1][r][l]--;
            if(!mp[1][r][l])
                mp[1][r].erase(l);
            cnt--;
            upd(l),upd(r);
        }
        modify(1,l,1,1000000),modify(1,r,1,1000000);
        if(tr[1].val1>5e8)
            printf("%d\n",tr[1].val2);
        else
            printf("%d\n",tr[1].val1);
    }
    return 0;
}